import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class Main282right {
    static int num = 0;

    public static void main(String[] args) {
        Semaphore semaphore = new Semaphore(0);
        new Thread(() -> {
            for (int i = 0;i<2;i++){
                try {
                    // 等待1s
                    TimeUnit.MILLISECONDS.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // 操作共享变量
                num++;
                semaphore.release(1);// 放入2个许可证
            }
        }).start();

        new Thread(() -> {
            try {
                // 这里会阻塞，直到有一个许可证为止
                semaphore.acquire();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程2获取到num=" + num);
        }).start();

        new Thread(() -> {
            try {
                // 这里会阻塞，直到有一个许可证为止
                semaphore.acquire();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程3获取到num=" + num);
        }).start();
    }
}
